package com.javabasic.reflect;

import java.lang.reflect.Constructor;

/**
 * @Author xiongmin
 * @ClassName TestReflect
 * @Description TODO
 * @Date 2019/8/21 16:56
 * @Version 1.0
 **/
public class TestReflect {

    public static void main(String[] args) throws Exception {

        // 获取 Person 类的 Class 对象
        Class clazz = Class.forName("com.javabasic.reflect.Person");

        // 使用.newInstane 方法创建对象
        Person person = (Person) clazz.newInstance();

        person.setAge(22);
        person.setName("hans");

        System.out.println(person);

        // 获取构造方法并创建对象
        Constructor constructor = clazz.getConstructor(Integer.class, String.class); // 构造方法的参数一定要是包装类型

        // 创建对象并设置属性
        Object hans_mini = constructor.newInstance(12, "hans mini");

        if (hans_mini instanceof Person) {
            hans_mini = (Person) hans_mini;
            System.out.println("can be change");
        }

        System.out.println(hans_mini);

    }
}
